import pk from '../../package.json'
const { version } = pk

// 处理模板
const handleUrl = (url) => {
  // 去除参数 .去除后缀 .去除动态部分 .去除第一个空值
  url = url.split('?')[0].split('.')[0].split('-')[0].slice(1)
  // 去除动态参数（第三级是参数）
  const urls = url.split('/')
  const len = urls.length
  url = len > 2 ? urls.splice(0, 2).join('/') : url
  return url
}

// 处理模块
const handleModule = (render) => {
  const index = render.indexOf('/')
  if (index !== -1) {
    const firstLetter = render.charAt(index + 1)
    const firstLetterToUp = firstLetter.toUpperCase()
    return render.replace('/' + firstLetter, firstLetterToUp)
  }
}

// 模板数据定义
export const setRenderData = (req, res, next) => {
  let { url } = req
  url = handleUrl(url)
  // 模板
  const render = url || 'index'
  // 模块
  const module = handleModule(render) || 'index'
  res.renderData = {
    // 自定义全局数据（该数据已在全局输出到 js），在此添加数据需提醒大家
    qqtCustom: {
      version, // 版本
      module, // 模块标识
      render, // 渲染模板
      tplConfig: [] // 模板配置
    },
    // query 参数（该数据已在全局输出到 js）
    qqtQuery: {
      // 访问类型 （编辑 tplEdit or 预览 tplPreview）
      mode: req.query.mode || 'tplOnline',
      ...req.query
    },
    // params 参数（该数据已在全局输出到 js）
    qqtParams: req.params,
    // 接口数据（测试数据）
    qqtData: {
      detail: {
        title: 'title',
        keywords: 'keywords',
        description: 'description',
        tplClass: 'tplOne',
        headerClass: 'headerOne',
        footerClass: 'footerOne',
        bannerList: [{}],
      }
    }
  }
  next()
}
